<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Promise</title>
</head>
<body>
    <script>
        /** 
         * Promise 标识承诺在未来某个时刻可能会完成并返回结果
         *
         * 对于某些需要时间来处理结果的操作，例如：用户登录、读取文件，可以用来执行异步操作。
         * Promise 对象有三种状态，pending、fulfilled、rejected，即待处理、已执行、驳回。
         *
         *当创建一个 Promise 对象时，状态为 pending 。
         *当异步执行成功时，会调用 resolve 函数，把 Promise 对象的状态改变为 fulfilled，可通过 then 方法来获取异步操作的结果
         *当异步执行异常时，会调用 reject 函数把 Promise 对象的状态改为 rejected，可通过 catch方法来处理错误
         */

        let p = new Promise((resolve, reject) => {
            resolve("200，操作成功");
            // reject("500，操作失败");
        });
        console.log("Promise: ", p);
        p.then(data => {
            console.log("success: ", data);
        }).catch(e =>{
            console.log("error: ", e);
        }).finally(() => {
            console.log("异步执行结束");
        });
    </script>
</body>
</html>